package com.whfc.emp.service;

import com.whfc.common.exception.BizException;
import com.whfc.common.mqtt.MqttMessageParam;
import com.whfc.emp.entity.AppDeviceCardLog;
import com.whfc.emp.param.AddEmpDataParam;
import com.whfc.emp.param.EmpInfoParam;

import java.util.Date;
import java.util.List;

/**
 * @ClasssName AppInnerService
 * @Description 内部应用
 * @Author hw
 * @Date 2021/1/5 11:42
 * @Version 1.0
 */
public interface AppInnerService {

    /**
     * 编造人员安全帽数据
     *
     * @param empId
     * @param deviceId
     * @param time
     * @param lat
     * @param lng
     */
    void buildEmpData(Integer empId, Integer deviceId, Date time, Double lat, Double lng) throws BizException;

    /**
     * 导入excel根据身份证修改人员信息
     *
     * @param param
     * @throws Exception
     */
    void updateEmpInfo(List<EmpInfoParam> param) throws Exception;

    /**
     * 处理工种id内部接口
     *
     * @param deptId
     */
    void syncWorkTypeId(Integer deptId) throws BizException;

    /**
     * 刷新人员PolygonWKT
     *
     * @param deptId
     * @throws BizException
     */
    void refreshPolygonWKT(Integer deptId) throws BizException;

    /**
     * 修正安全帽数据
     *
     * @param param
     * @throws BizException
     */
    void amendHelmetData(List<AppDeviceCardLog> param) throws BizException;

    /**
     * 添加安全帽数据
     *
     * @param date
     * @param empId
     * @param deviceId
     * @param lat
     * @param lng
     * @throws BizException
     */
    void addEmpData(Date date, Integer empId, Integer deviceId, Double lat, Double lng) throws BizException;

    /**
     * 添加安全帽数据
     *
     * @param param
     * @throws BizException
     */
    void batchAddEmpData(AddEmpDataParam param) throws BizException;

    /**
     * 清理人员考勤记录脏数据
     *
     * @param startTime
     * @param endTime
     * @throws BizException
     */
    void cleanEmpAttendRecord(Date startTime, Date endTime) throws BizException;

    /**
     * 清理闸机识别揭露脏数据
     *
     * @param startTime
     * @param endTime
     * @throws BizException
     */
    void cleanFacegateRecord(Date startTime, Date endTime) throws BizException;

    /**
     * 指定主题、qos发送消息
     *
     * @param param mqtt消息参数
     * @throws BizException 业务异常
     */
    void sendMqttMessage(MqttMessageParam param) throws BizException;

    /**
     * 更新人员异常工种
     * @throws BizException 业务异常
     */
    void updateEmpWorkType() throws BizException;
}
